djinnifandomcom-20200222-history
Character Exporting
Category:Graphic contents Aurabase In order to export anything, first you have to build scene’s root: AuraBase. It’s located in the Create panel in Helpers. It’s the smallest exported piece of a scene. In the Modify panel we can change the type of the model. Character is a character, Tile is a location, Item is an item. Here, we define the animation, i.e. the name, beginning and ending. You can define several of them in one file. The exporter will automatically name the exported asset – aurabase’s_name.mdl. Export is standard – choose File/Export. Choose Aurora mdl as the plugin. From one scene, we can export several assets (as many as many aurabases we put in). Actually the whole branch of hierarchy under each Aurabase makes the future model and its hierarchy. Mesh In order to export the mesh you simply need to link it to aurabase. It shouldn’t be recalibrated, as the scale won’t be exported anyway. Just in case, you should do resetxform on every mesh (you should do it with the unlinked one, and after the collapse you link the mesh once again). The exporter will export only the first mapping channel. With the exception of lightmaps, which require additional channel. If there is one, the texture will be exported with the mesh. If it’s located in the game’s resources, it should be visible in the editor. The missing texture will be replaced with a pink colour. Node names cannot contain more than 16 characters. Skin The hierarchy below Aurabase makes the hierarchy of the future asset. Both Editable_Mesh and Editable_Poly will be exported as meshes. Apart from these, we can also export dummies (the bones will also be exported as dummies), these are all nodes which have some transformation, but with no mesh. It’s enough, if there is Aurabase somewhere in the hierarchy above. You can export skinned meshes. They have to be skinned with the Skin modifier. Each mesh can be skinned with up to 33 bones and up to 4 weights per vertex. If there are more than 33 bones in the Skin, you should cut such mesh into pieces. The skinned mesh has to be linked to Aurabase as well. Special Nodes Special nodes in model’s hierarchy are: origin, headconjure, handconjure, impact, lhand, rhand and slots. As an option, you can put FXs – dummies which will have effects attached. headconjure should be above the head and in front of the character. It is where captions, etc. are attached. Effects can also be attached to it. Slots should be placed in such a way that, after they have weapons aligned (their aurabase), they would fit the character. The character has to have all the listed slots even if they’re empty - the game engine expects to find them, thus they must be present. Impact is the point for finishers. It helps to play the finisher correctly. Impact can be understood as the target, which will be attacked. The best place to put it is somewhere in the chest. lhand and rhand are used by the character for holding and making damage. Shaders Shaders are attached to meshes with a special Testmat material (scripted material). After we attach it, we simply choose shader with the button on the top (mfx extension). Its parameters will appear on the list below. After marking one of them, there should be an editing box just below the listbox. Additionally the model can have diffuse and opacity textures attached using materialbuttons below. Skinned meshes must have shaders with skinning attached. Naming the textures can be helpful cr_charactername_c1.tga for diffuse and cr_charactername_c1_n.tge for mormalmap (the name can’t be longer than 16 characters). Sample Shaders with skin: skin_n -only diffuse and normalamap skin_n_rim_ao -diffuse, normalamp and ambient colour skin_nrimaoenv - diffuse, normalamp, cubemap and ambient colour skin_all_trans - diffuse, normalamp, cubemap, ambient colour and transmissionmap transparency_2ps – for objects with gradient alpha (diffuse only) skin_n_glow – diffuse and normalmap + glow (flickering: amplitude, frequency, etc...) Sample Shaders without skin: normalmap – only diffuse and normalmap norm_env_rim_ao – diffuse, normalmap, cubemap and ambient colour transparency_2p – for objects with gradient alpha (diffuse only) Aurapoly Each mesh, skinned or not, should have Aurapoly modifier (scripted simple_mod). The only setup we should change is the renderlist on opaque and min and maxlod to 0 and 5 respectively. If there are shadowbones in the scene you should also mark ignore-hitcheck and, of course, unmark it on the shadowbones. Shadowbones are lopoly unskinned meshes used for casting shadows or for hitcheck. You should mark don’t_render and cast_shadows on them. Of course, you can do it on any mesh but you have to remember about the efficiency. Danglers There are two: danglynode and chain. Danglynode is a simple dangler, which always tries to return to initial position (it doesn’t collide with anything, doesn’t consider gravity, it has mass and force). It’s enough to put danglynode modifier on specific bones and set the parameters (by trial and error). You shouldn’t exaggerate with them. chain is a chain of bones. Chain modifier is put on one bone. Everything below will become its part (we don’t split it). We can add collision mesh to the chain, Dyng_Sphere or DyngSphyle (scripted_geometry). We can link them freely, and precede the name with ignore_ as only its parameters are exported and not the visible mesh. Collision meshes are added in chain modifier. You really shouldn’t exaggerate with them. Chains have to skin the mesh, as everything we link to them will become a part of it. Export Meshes should be reset with resetxform. While exporting the character you should add its one-frame animation T_Pose (e.g. from frame 0 to 1). The pose in T_Pose should match with animation’s T_Pose. Each mesh should have its aurapoly. Special shaders, which support skinning, should be attached to skinned meshes. In case of lack of shader, default one will be exported, which will work both with and without skinning. Only hierarchy below the aurabase will be exported (it also concerns meshes). Allowed controllers for position are Bezier, Linear Position, Position XYZ. For rotation – TCB and Linear_Rotation. k_ prefix with the name of the bone results in exporting the animation’s key for each frame (the engine interpolates linearly). ignore prefix results in exporting nod as dummy, even if it’s a mesh. Together it should look like that k_ignore_name of the bone. It’s advisable for all meshes to have pivots in the same place and with the same orientation, it will prevent slits between meshes. E.g., after cutting skinned mesh into separate meshes. In such case it’s probable, that vertex’s normals in both meshes (in the same places) will have different normals which will result in creating a visible stitch in the joining place. In order to fix this you should select both meshes and put edit_normals on them, there you can collapse appropriate normals. Restrictions You mustn’t use scale on the bones, after recalibrating the mesh it should be immediately reset with resetxform (it works only if the object doesn’t have a parent). Actually, it would be the best if the character’s skeleton was identical with animation’s skeleton, had identical hierarchy and length of the bones (and even the rotations and positions). If the mesh doesn't fit the skeleton it's better to modify the mesh and not the other way round. Skinned mesh should be linked directly to aurabase. You mustn’t change the hierarchy of the skeleton because the animation may not play.